// https://leetcode-cn.com/problems/subsets/
// 78. 子集
// 给定一个整数数组 nums，数组中的元素互不相同。返回该数组所有可能的子集
// 解集不能包含重复的子集，你可以按任意顺序返回解集
function subsets(nums: number[]): number[][] {
    const result: number[][] = [];
    const t: number[] = [];
    const n = nums.length;

    function dfs(idx: number): void {
        if (idx === n) {
            result.push(t.slice());
            return;
        }

        t.push(nums[idx]);
        dfs(idx + 1);
        t.pop();
        dfs(idx + 1);
    }

    dfs(0);

    return result;
}
